Przykad 4.2. Sortowanie przez wstawianie z uyciem wartoci bezporednich
void sortValues (void *base, int n, int s,
                   int(*cmp)(const void *, const void *)) {
   int j;
   void *saved = malloc(s);

   for (j = 1; j < n; j++) {
      /* Zacznij od koca, pracuj wstecz, a do mniejszego elementu lub i < 0 */
      int i = j-1;
      void *value = base + j*s;
      while (i >= 0 && cmp(base + i*s, value) > 0) { i--; }

      /* Jeli ju na miejscu, nie trzeba przesuwa. Jeli nie, to
       * przechowaj warto do wstawienia i przesu jako DUY blok wartoci.
       * Nastpnie wstaw na waciwe miejsce */
      if (++i == j) continue;

      memmove(saved, value, s);
      memmove(base + (i+1)*s), base + i*s, s*(j-i));
      memmove(base + i*s, saved, s);
   }
   free(saved);
}
